package cn.psvmc.cxzapi.mapper.goods;

import cn.psvmc.cxzapi.config.mybatisplus.mapper.MyBaseMapper;
import cn.psvmc.cxzapi.model.common.SearchEntity;
import cn.psvmc.cxzapi.model.goods.TGoods;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 商品表 Mapper 接口
 *
 * @Author auto
 * @Date 2024-08-13
 */
public interface TGoodsMapper extends MyBaseMapper<TGoods> {

    //商家-商品管理列表
    IPage<Map> listAll(Page<TGoods> iPage, @Param("entity") SearchEntity entity);

    //平台-商品管理列表
    IPage<Map> listPt(Page<TGoods> iPage, @Param("entity") SearchEntity entity);

    //编辑总库存
    void editStock(@Param("goodsId") Integer goodsId, @Param("stock") Integer stock);

    //商品二维码
    Map<String, Object> detailCode(@Param("goodsId") Integer goodsId);

    //商品选择列表
    IPage<Map> listForSel(Page<TGoods> iPage, @Param("entity") SearchEntity entity);

    //使用的分类列表
    List<Map> listUsedType(@Param("storeid") Integer storeId);

    //商品详情
    Map<String, Object> findById(@Param("goodsId") Integer goodsId);

    //客户查看商品详情
    Map<String, Object> customerFindById(@Param("goodsId") Integer goodsId);

    //根据商品ID获取商品名称
    String getNameById(@Param("goodsId") Integer goodsId);

    //撤销审核
    void cancelCheck(@Param("goodsId") Integer goodsId, @Param("updateid") Integer userId, @Param("updatetime") LocalDateTime now);

    //根据订单ID获取商品名称
    String getNameByOrderId(@Param("orderId") Integer orderId);

    //根据商品编码更新商品类型
    void updateGoodsType(@Param("goodsType") int goodsType, @Param("goodsCodes") List<String> list);

    //获取免审更新缺货商品
    List<TGoods> listTaskGoods();

    //根据商品id更新商品类型
    void updateGoodsTypeById(@Param("goodsId") Integer goodsId, @Param("goodsType") Integer goodsType);

    //根据商品编码更新是否同步
    void updateNeedSyncByGoodsCode(@Param("goodsCode") String goodsCode, @Param("needSync") int needSync);
}
